export default{
  methods:{
    newTableMergeData(mergeCols,tableData) {
      for (let i = 0; i < tableData.length; i++) {
        for (let j = 0; j < mergeCols.length; j++) {
          // 初始化行、列坐标信息
          let rowIndex = 1;
          let columnIndex = 1;
          // 比较横坐标左方的第一个元素
          if (
            j > 0 &&
            tableData[i][mergeCols[j]["name"]] ===
              tableData[i][mergeCols[j - 1]["name"]]
          ) {
            columnIndex = 0;
          }
          // 比较纵坐标上方的第一个元素
          if (
            i > 0 &&
            tableData[i][mergeCols[j]["name"]] ===
              tableData[i - 1][mergeCols[j]["name"]]
          ) {
            rowIndex = 0;
          }
          // 比较横坐标右方元素
          if (columnIndex > 0) {
            columnIndex = this.onColIndex(
              tableData[i],
              j,
              j + 1,
              1,
              mergeCols.length,
              mergeCols
            );
          }
          // 比较纵坐标下方元素
          if (rowIndex > 0) {
            rowIndex = this.onRowIndex(
              tableData,
              i,
              i + 1,
              1,
              mergeCols[j]["name"]
            );
          }
          let key = mergeCols[j]["index"] + "_" + i;
          console.log();
          this.tableMergeIndex[key] = [rowIndex, columnIndex];
        }
      }
    },
    /**
     * 计算列坐标信息
     * data 单元格所在行数据
     * index 当前下标
     * nextIndex 下一个元素坐标
     * count 相同内容的数量
     * maxLength 当前行的列总数
     */
    onColIndex(data, index, nextIndex, count, maxLength, mergeCols) {
      // 比较当前单元格中的数据与同一行之后的单元格是否相同
      if (
        nextIndex < maxLength &&
        data[mergeCols[index]["name"]] === data[mergeCols[nextIndex]["name"]]
      ) {
        return this.onColIndex(
          data,
          index,
          ++nextIndex,
          ++count,
          maxLength,
          mergeCols
        );
      }
      return count;
    },
    /**
     * 计算行坐标信息
     * data 表格总数据
     * index 当前下标
     * nextIndex 下一个元素坐标
     * count 相同内容的数量
     * name 数据的key
     */
    onRowIndex(data, index, nextIndex, count, name) {
      // 比较当前单元格中的数据与同一列之后的单元格是否相同
      if (
        nextIndex < data.length &&
        data[index][name] === data[nextIndex][name]
      ) {
        return this.onRowIndex(data, index, ++nextIndex, ++count, name);
      }
      return count;
    }
  }
}

